const { reject } = require("bluebird");

// var promise = new Promise(function(resolve, reject) {  
//   resolve('success');  
//   throw new Error('error');  
// });  
// promise  
//   .then(function(value) {  
//       console.log(value)  
//   })  
//   .catch(function(error) {  
//       console.log(error)  
//   });  

// var catchError = new Promise(function(resolve, reject) {  
//   setTimeout(function(){
//       resolve('success')
//   }, 1000)  
// }) 

// catchError
// .then(function(value){
//   console.log('a')
// })
// .then(function(value){
//   throw new Error('test');  
//   console.log('b')
// })
// .then(function(value){
//   console.log('c')
// })
// .catch(function(error){
//   console.log(error)
// })

// var foo = function() {  
//   return new Promise(function(resolve, reject) {  
//       //  下面一行会报错，因为 a 没有声明  
//       resolve(a + 2);  
//   });  
// };  
// foo().then(function() {  
//   console.log('everything is great');  
// });  

// var promise = new Promise(function(resolve, reject) {  
//   resolve("success");  
//   setTimeout(function() {  
//       throw new Error('error')  
//   }, 0)  
// });  
// promise.then(function(value) {  
//   console.log(value)  
// });  

// var foo = function() {  
//   return new Promise(function(resolve, reject) {  
//       //  下面一行会报错，因为 a 没有声明  
//       resolve(a + 2);  
//   });  
// };  
// foo()  
//   .catch(function(error) {  
//       console.log('Error', error);  
//   })  
//   .then(function() {  
//       console.log('success');  
//   });  

// const promise1 = Promise.resolve(3);
// const promise2 = 42;
// const promise3 = new Promise((resolve, reject) => {
//   setTimeout(resolve, 100, 'foo');
// });

// Promise.all([promise1, promise2, promise3]).then((values) => {
//   console.log(values);
// });

// Promise.resolve("Success").then(function(value) {
//   console.log(value); 
// }, function(value) {
//   // 不会被调用
// });

// var p = Promise.resolve([1,2,3]);
// p.then(function(v) {
//   console.log(v[0]); // 1
// });

// var promise = new Promise(function(resolve, reject) {  
//   console.log('Promise');  
//   resolve();  
// });  
// promise.then(function() {  
//   console.log('Resolved.');  
// });  
// console.log('hello world'); 

function getURL(URL) {
  return new Promise(function (resolve, reject) {
      var req = new XMLHttpRequest(); 

      req.open('GET', URL, true); 

      req.onload = function () {
          if (req.status === 200) { 
              resolve(req.responseText);
          } else {
              reject(new Error(req.statusText));
          } 
      };
      
      req.onerror = function () { 
          reject(new Error(req.statusText));
      };
      req.send(); 
  });
}
// 运行示例
var URL = "http://httpbin.org/get"; 
getURL(URL).then(function onFulfilled(value){
  console.log(value); 
}).catch(function onRejected(error){
  console.error(error); 
});